home *** CD-ROM | disk | FTP | other *** search
Text File | 2002-08-13 | 51.0 KB | 1,580 lines |
- '-> SamplesMaster by Stefano Maria Regattin
- 'i> 7 luglio 1996
- 'm> 8,9,11,13,15,16,21,22,23,25,27,28,30 luglio 1996
- 'm> 1,2,4,7,8,10,12,13,14,16,17,20,21,28,29 agosto 1996
- 'm> 4,12,13,17 ottobre 1996
- 'm> 1,11,13,14 novembre 1996
- 'm> 20 febbraio 1997
- 'm> 8 marzo 1997
- 'm> 17 giugno 1997
- 'm> 10 novembre 1997
- 'm> 31 marzo 1998
- 'm> 3,4,5,8,9,11,20,25,26,27,29 aprile 1998
- 'm> 5,7,8,9,19,23 luglio 1998
- 'm> 11 agosto 1998
- 'm> 24 aprile 1999
- 'm> 22,31 luglio 1999
- 'm> 28 novembre 1999
- 'm> 4 dicembre 1999
- 'm> 20,21 maggio 2000
- 'm> 13 dicembre 2000
- 'm> 17,20,21 gennaio 2001
- 'm> 26,27 febbraio 2001
- 'm> 12 agosto 2002
- '------------------
- Set Buffer 40
- BANCO=65535
- BANCODIIO=65534
- BANCO3=65533
- BANCO4=65532
- Global ANNOTAZIONI$,FILE$,NOMEFILE$,ZONAATTIVA$
- Global ALTEZZA,ANOMALOIFF,BANCO,BANCODIIO,BANCO3,BANCO4,CICLO,FILTRO
- Global FINECAMPIONE,FREQUENZA,GENERACAMPIONE,INIZIO,INIZIOCAMPIONE
- Global LUNGHEZZACAMPIONE,NUOVAFINECAMPIONE,NUOVAFREQUENZA,NUOVOINIZIOCAMPIONE
- Global PASSO,POSIZIONEINGRANDIMENTO,POSIZIONESLIDER,RIDUZIONE,SENZAMEMORIA
- Global ULTIMALINEA,XLINEAFINECAMPIONE,XLINEAINIZIOCAMPIONE
- Global YSLIDERINGRANDIMENTO,ZERO
- Global DIVISIONESLIDERINGRANDIMENTO#
- Dim F0RMADONDA(8191)
- Global F0RMADONDA()
- Proc SETTASCHERMO
- Proc ARCOBALENO
- Reserve As Chip Work BANCO,512
- FILTRO=True
- FREQUENZA=8363
- Proc CONDIZIONEINIZIALE
- Repeat
- Repeat
- TASTODELTOPOPREMUTO=Mouse Key
- ZONATOPO=Mouse Zone
- If TASTODELTOPOPREMUTO=1
- If DENTROZONA=False
- If ZONATOPO=1
- 'Suona il campione
- Inverse On : Print At(0,ULTIMALINEA-3);"Suona"
- Proc SUONA
- End If
- If ZONATOPO=2
- 'Ferma la riproduzione del campione
- Inverse On : Print At(0,ULTIMALINEA-2);"Ferma"
- Sam Stop
- End If
- If ZONATOPO=3
- 'Attiva o disattiva la riproduzione all'infinito del campione
- CICLO= Not CICLO : Proc CICLO
- End If
- If ZONATOPO=4
- 'Attiva o disattiva il filtro audio
- FILTRO= Not FILTRO : Proc FILTRO
- End If
- If ZONATOPO=5
- 'Mostra tutto il campione
- Inverse On : Print At(19,ULTIMALINEA-2);"Tutto"
- NUOVOINIZIOCAMPIONE=Start(BANCO)
- NUOVAFINECAMPIONE=Start(BANCO)+Length(BANCO)-1
- LUNGHEZZACAMPIONE=NUOVAFINECAMPIONE-NUOVOINIZIOCAMPIONE+1
- LUNGHEZZACAMPIONE=Max(LUNGHEZZACAMPIONE,512)
- Proc MOSTRACAMPIONE
- INIZIO=True : Proc INIZIO
- POSIZIONESLIDER=0
- Proc SLIDERINGRANDIMENTO
- POSIZIONEINGRANDIMENTO=NUOVOINIZIOCAMPIONE-320 : Proc INGRANDISCI
- End If
- If ZONATOPO=6
- 'Mostra una porzione del campione compresa tra tra le due linee verdi
- Inverse On : Print At(26,ULTIMALINEA-2);"Tra le linee"
- Proc MOSTRACAMPIONE
- INIZIO=True : Proc INIZIO
- POSIZIONESLIDER=0
- Proc SLIDERINGRANDIMENTO
- POSIZIONEINGRANDIMENTO=NUOVOINIZIOCAMPIONE-320 : Proc INGRANDISCI
- End If
- If ZONATOPO=7
- 'Mostra l'inizio del campione ed attiva la linea verde marcatrice d'inizio
- ' come marcatore corrente
- INIZIO=True : Proc INIZIO
- POSIZIONEINGRANDIMENTO=NUOVOINIZIOCAMPIONE-320
- POSIZIONESLIDER=(PASSO*(POSIZIONEINGRANDIMENTO-INIZIOCAMPIONE+1))/(FINECAMPIONE-INIZIOCAMPIONE+1)
- Proc SLIDERINGRANDIMENTO : Proc INGRANDISCI
- End If
- If ZONATOPO=8
- 'Mostra la fine del campione ed attiva la linea verde marcatrice della fine
- ' come marcatore corrente
- INIZIO=False : Proc INIZIO
- POSIZIONEINGRANDIMENTO=NUOVAFINECAMPIONE-319
- POSIZIONESLIDER=(PASSO*(POSIZIONEINGRANDIMENTO-INIZIOCAMPIONE+1))/(FINECAMPIONE-INIZIOCAMPIONE+1)
- Proc SLIDERINGRANDIMENTO : Proc INGRANDISCI
- End If
- If ZONATOPO=9
- 'Cerca lo zero all'indietro nel campione a partire dalla linea verde
- ' marcatrice corrente
- Inverse On : Print At(51,ULTIMALINEA-2);"<Indietro"
- If INIZIO=True
- Proc CERCALOZERO[NUOVOINIZIOCAMPIONE,False] : NUOVOINIZIOCAMPIONE=Param
- LIMITI[NUOVOINIZIOCAMPIONE,Start(BANCO),Start(BANCO)+Length(BANCO)-1]
- NUOVOINIZIOCAMPIONE=Param : POSIZIONEINGRANDIMENTO=NUOVOINIZIOCAMPIONE-320
- Else
- Proc CERCALOZERO[NUOVAFINECAMPIONE,False] : NUOVAFINECAMPIONE=Param
- LIMITI[NUOVAFINECAMPIONE,Start(BANCO),Start(BANCO)+Length(BANCO)-1]
- NUOVAFINECAMPIONE=Param : POSIZIONEINGRANDIMENTO=NUOVAFINECAMPIONE-319
- End If
- POSIZIONESLIDER=(PASSO*(POSIZIONEINGRANDIMENTO-INIZIOCAMPIONE+1))/(FINECAMPIONE-INIZIOCAMPIONE+1)
- Proc SLIDERINGRANDIMENTO
- Proc AGGIUSTACAMPIONE : Proc LINEE : Proc INGRANDISCI
- End If
- If ZONATOPO=10
- 'Cerca lo zero avanti nel campione a partire dalla linea verde marcatrice
- ' corrente
- Inverse On : Print At(61,ULTIMALINEA-2);"Avanti>"
- If INIZIO=True
- Proc CERCALOZERO[NUOVOINIZIOCAMPIONE,True] : NUOVOINIZIOCAMPIONE=Param
- LIMITI[NUOVOINIZIOCAMPIONE,Start(BANCO),Start(BANCO)+Length(BANCO)-1]
- NUOVOINIZIOCAMPIONE=Param : POSIZIONEINGRANDIMENTO=NUOVOINIZIOCAMPIONE-320
- Else
- Proc CERCALOZERO[NUOVAFINECAMPIONE,True] : NUOVAFINECAMPIONE=Param
- LIMITI[NUOVAFINECAMPIONE,Start(BANCO),Start(BANCO)+Length(BANCO)-1]
- NUOVAFINECAMPIONE=Param : POSIZIONEINGRANDIMENTO=NUOVAFINECAMPIONE-319
- End If
- POSIZIONESLIDER=(PASSO*(POSIZIONEINGRANDIMENTO-INIZIOCAMPIONE+1))/(FINECAMPIONE-INIZIOCAMPIONE+1)
- Proc SLIDERINGRANDIMENTO
- Proc AGGIUSTACAMPIONE : Proc LINEE : Proc INGRANDISCI
- End If
- If ZONATOPO=11
- 'Carica un campione
- Inverse On : Print At(69,ULTIMALINEA-3);"Carica" : Inverse Off
- Proc FERMACAMPIONEEDANNULLACICLOCAMPIONE
- Proc CARICAUNFILE
- Exit If SENZAMEMORIA=True,2
- If Exist(FILE$)
- Proc CARICARAWOIFF
- Proc CONDIZIONEINIZIALE
- End If
- End If
- If ZONATOPO=12
- 'Attiva la zona di ingrandimento o,se questa era già attiva, sposta la linea
- ' verde marcatrice corrente nella posizione indicata dal puntatore del mouse
- If ZONAATTIVA$="Ingrandimento"+Chr$(149)+Chr$(150)
- Proc TIC[Chr$(151)+Chr$(152)+" "+Chr$(153)+Chr$(154)+" spostamento di un Byte",ULTIMALINEA]
- If INIZIO=True
- NUOVOINIZIOCAMPIONE=POSIZIONEINGRANDIMENTO+X Screen(X Mouse)
- NUOVOINIZIOCAMPIONE=Max(NUOVOINIZIOCAMPIONE,INIZIOCAMPIONE)
- Else
- NUOVAFINECAMPIONE=POSIZIONEINGRANDIMENTO+X Screen(X Mouse)
- NUOVAFINECAMPIONE=Min(NUOVAFINECAMPIONE,FINECAMPIONE)
- End If
- POSIZIONESLIDER=(PASSO*(POSIZIONEINGRANDIMENTO-INIZIOCAMPIONE+1))/(FINECAMPIONE-INIZIOCAMPIONE+1)
- Proc SLIDERINGRANDIMENTO
- Proc AGGIUSTACAMPIONE : Proc LINEE : Proc INGRANDISCI
- Else
- ZONAATTIVA$="Ingrandimento"+Chr$(149)+Chr$(150)
- Proc MOSTRALAZONAATTIVA
- End If
- NUOVOMESSAGGIO=True
- End If
- If ZONATOPO=13
- 'Attiva la zona del campione o, se questa era già attiva, sposta la linea
- ' verde marcatrice corrente nella posizione indicata dal puntatore del mouse
- If ZONAATTIVA$=" Campione"+Chr$(147)+Chr$(148)
- If INIZIO=True
- NUOVOINIZIOCAMPIONE=INIZIOCAMPIONE+X Screen(X Mouse)*PASSO
- NUOVOINIZIOCAMPIONE=Max(NUOVOINIZIOCAMPIONE,INIZIOCAMPIONE)
- POSIZIONEINGRANDIMENTO=NUOVOINIZIOCAMPIONE-320
- Else
- NUOVAFINECAMPIONE=INIZIOCAMPIONE+X Screen(X Mouse)*PASSO
- NUOVAFINECAMPIONE=Min(NUOVAFINECAMPIONE,FINECAMPIONE)
- POSIZIONEINGRANDIMENTO=NUOVAFINECAMPIONE-320
- End If
- POSIZIONESLIDER=(PASSO*(POSIZIONEINGRANDIMENTO-INIZIOCAMPIONE+1))/(FINECAMPIONE-INIZIOCAMPIONE+1)
- Proc SLIDERINGRANDIMENTO
- Proc AGGIUSTACAMPIONE : Proc LINEE : Proc INGRANDISCI
- Else
- ZONAATTIVA$=" Campione"+Chr$(147)+Chr$(148)
- Proc MOSTRALAZONAATTIVA
- End If
- End If
- If ZONATOPO=14
- 'Genera un nuovo campione
- Inverse On : Print At(6,ULTIMALINEA-2);"Genera" : Inverse Off
- Proc GENERACAMPIONE
- GENERACAMPIONE=False
- Proc CONDIZIONEINIZIALE
- End If
- If ZONATOPO=15
- 'Salva il campione come RAW od IFF
- Inverse On : Print At(69,ULTIMALINEA-2);"Salva"
- Proc FERMACAMPIONEEDANNULLACICLOCAMPIONE
- Proc SALVAUNFILE
- Proc MESSAGGI
- End If
- If ZONATOPO=16
- 'Esce dal programma
- Exit 2
- End If
- If ZONATOPO=18
- 'Reimposta la frequenza di riproduzione originale del campione
- Inverse On
- Print At(0,ULTIMALINEA-5);"Frequenza"
- Proc TIC["Ripristina la frequenza originaria",ULTIMALINEA]
- NUOVAFREQUENZA=FREQUENZA
- Proc FREQUENZA
- NUOVOMESSAGGIO=True
- End If
- If ZONATOPO=19
- 'Porta la frequenza di riproduzione del campione avanti
- Inverse On
- Print At(9,ULTIMALINEA-5);Chr$(147)+Chr$(148)
- Proc TIC["Tasto sinistro del mouse>incremento lento",ULTIMALINEA]
- Inc NUOVAFREQUENZA
- Proc LIMITI[NUOVAFREQUENZA,500,28000] : NUOVAFREQUENZA=Param
- Proc FREQUENZA
- NUOVOMESSAGGIO=True
- End If
- If ZONATOPO=20
- 'Porta la frequenza di riproduzione del campione indietro
- Inverse On
- Print At(11,ULTIMALINEA-5);Chr$(149)+Chr$(150)
- Proc TIC["Tasto sinistro del mouse>decremento lento",ULTIMALINEA]
- Dec NUOVAFREQUENZA
- Proc LIMITI[NUOVAFREQUENZA,500,28000] : NUOVAFREQUENZA=Param
- Proc FREQUENZA
- NUOVOMESSAGGIO=True
- End If
- If ZONATOPO=21
- 'Miscela due campioni con dissolvenza tra l'uno e l'altro
- Inverse On : Print At(26,ULTIMALINEA-5);"MixTimbri" : Inverse Off
- Proc MISCELATIMBRI
- GENERACAMPIONE=False
- Proc CONDIZIONEINIZIALE
- End If
- If ZONATOPO=22
- 'Posiziona al volo le linee marcatrici verdi
- Inverse On : Print At(36,ULTIMALINEA-5);"MarcaAlVolo" : Inverse Off
- Proc FERMACAMPIONEEDANNULLACICLOCAMPIONE
- Proc MARCAALVOLO
- Proc AGGIUSTACAMPIONE
- Proc SLIDERINGRANDIMENTO
- POSIZIONEINGRANDIMENTO=NUOVOINIZIOCAMPIONE-320 : Proc INGRANDISCI
- NUOVOMESSAGGIO=True
- End If
- DENTROZONA=True
- End If
- If ZONATOPO=17
- 'Attiva lo slider che permette di scegliere l'area ingrandita del campione
- ' da vedere
- POSIZIONESLIDER=X Screen(X Mouse)/DIVISIONESLIDERINGRANDIMENTO#
- Proc SLIDERINGRANDIMENTO
- POSIZIONEINGRANDIMENTO=INIZIOCAMPIONE+X Screen(X Mouse)*PASSO-319
- Proc INGRANDISCI
- End If
- Else If TASTODELTOPOPREMUTO=2
- If ZONATOPO=19
- 'Porta la frequenza di riproduzione del campione avanti velocemente
- Inverse On
- Print At(9,ULTIMALINEA-5);Chr$(147)+Chr$(148)
- Proc TIC["Tasto destro del mouse>incremento veloce",ULTIMALINEA]
- Inc NUOVAFREQUENZA
- Proc LIMITI[NUOVAFREQUENZA,500,28000] : NUOVAFREQUENZA=Param
- Proc FREQUENZA
- NUOVOMESSAGGIO=True
- End If
- If ZONATOPO=20
- 'Porta la frequenza di riproduzione del campioneindietro velocemente
- Inverse On
- Print At(11,ULTIMALINEA-5);Chr$(149)+Chr$(150)
- Proc TIC["Tasto destro del mouse>decremento veloce",ULTIMALINEA]
- Dec NUOVAFREQUENZA
- Proc LIMITI[NUOVAFREQUENZA,500,28000] : NUOVAFREQUENZA=Param
- Proc FREQUENZA
- NUOVOMESSAGGIO=True
- End If
- Else
- Inverse Off
- Print At(0,ULTIMALINEA-3);"Suona"
- Print At(0,ULTIMALINEA-2);"Ferma"
- Print At(19,ULTIMALINEA-2);"Tutto"
- Print At(26,ULTIMALINEA-2);"Tra le linee"
- Print At(51,ULTIMALINEA-2);"<Indietro"
- Print At(61,ULTIMALINEA-2);"Avanti>"
- Print At(69,ULTIMALINEA-3);"Carica"
- Print At(69,ULTIMALINEA-2);"Salva"
- Print At(0,ULTIMALINEA-5);"Frequenza";Chr$(147)+Chr$(148)+Chr$(149)+Chr$(150)
- Print At(26,ULTIMALINEA-5);"MixTimbri"
- Print At(36,ULTIMALINEA-5);"MarcaAlVolo"
- If NUOVOMESSAGGIO=True
- Proc MESSAGGI
- NUOVOMESSAGGIO=False
- End If
- DENTROZONA=False
- End If
- TASTOPREMUTO$=Inkey$
- Until TASTOPREMUTO$<>""
- If ZONAATTIVA$=" Campione"+Chr$(147)+Chr$(148)
- If INIZIO=True
- If TASTOPREMUTO$=Cright$
- Add NUOVOINIZIOCAMPIONE,PASSO
- LIMITI[NUOVOINIZIOCAMPIONE,INIZIOCAMPIONE,FINECAMPIONE]
- NUOVOINIZIOCAMPIONE=Param : Proc AGGIUSTACAMPIONE : Proc LINEE
- POSIZIONESLIDER=(PASSO*(POSIZIONEINGRANDIMENTO-INIZIOCAMPIONE+1))/(FINECAMPIONE-INIZIOCAMPIONE+1)
- Proc SLIDERINGRANDIMENTO
- POSIZIONEINGRANDIMENTO=NUOVOINIZIOCAMPIONE-320 : Proc INGRANDISCI
- End If
- If TASTOPREMUTO$=Cleft$
- Add NUOVOINIZIOCAMPIONE,-PASSO
- LIMITI[NUOVOINIZIOCAMPIONE,INIZIOCAMPIONE,FINECAMPIONE]
- NUOVOINIZIOCAMPIONE=Param : Proc AGGIUSTACAMPIONE : Proc LINEE
- POSIZIONESLIDER=(PASSO*(POSIZIONEINGRANDIMENTO-INIZIOCAMPIONE+1))/(FINECAMPIONE-INIZIOCAMPIONE+1)
- Proc SLIDERINGRANDIMENTO
- POSIZIONEINGRANDIMENTO=NUOVOINIZIOCAMPIONE-320 : Proc INGRANDISCI
- End If
- Else
- If TASTOPREMUTO$=Cright$
- Add NUOVAFINECAMPIONE,PASSO
- LIMITI[NUOVAFINECAMPIONE,INIZIOCAMPIONE,FINECAMPIONE]
- NUOVAFINECAMPIONE=Param : Proc AGGIUSTACAMPIONE : Proc LINEE
- POSIZIONESLIDER=(PASSO*(POSIZIONEINGRANDIMENTO-INIZIOCAMPIONE+1))/(FINECAMPIONE-INIZIOCAMPIONE+1)
- Proc SLIDERINGRANDIMENTO
- POSIZIONEINGRANDIMENTO=NUOVAFINECAMPIONE-319 : Proc INGRANDISCI
- End If
- If TASTOPREMUTO$=Cleft$
- Add NUOVAFINECAMPIONE,-PASSO
- LIMITI[NUOVAFINECAMPIONE,INIZIOCAMPIONE,FINECAMPIONE]
- NUOVAFINECAMPIONE=Param : Proc AGGIUSTACAMPIONE : Proc LINEE
- POSIZIONESLIDER=(PASSO*(POSIZIONEINGRANDIMENTO-INIZIOCAMPIONE+1))/(FINECAMPIONE-INIZIOCAMPIONE+1)
- Proc SLIDERINGRANDIMENTO
- POSIZIONEINGRANDIMENTO=NUOVAFINECAMPIONE-319 : Proc INGRANDISCI
- End If
- End If
- Else
- If INIZIO=True
- If TASTOPREMUTO$=Cright$
- If TASTODELTOPOPREMUTO=0
- Add NUOVOINIZIOCAMPIONE,320
- Else
- Inc NUOVOINIZIOCAMPIONE
- End If
- LIMITI[NUOVOINIZIOCAMPIONE,INIZIOCAMPIONE,FINECAMPIONE]
- NUOVOINIZIOCAMPIONE=Param : Proc AGGIUSTACAMPIONE : Proc LINEE
- POSIZIONESLIDER=(PASSO*(POSIZIONEINGRANDIMENTO-INIZIOCAMPIONE+1))/(FINECAMPIONE-INIZIOCAMPIONE+1)
- Proc SLIDERINGRANDIMENTO
- POSIZIONEINGRANDIMENTO=NUOVOINIZIOCAMPIONE-320 : Proc INGRANDISCI
- End If
- If TASTOPREMUTO$=Cleft$
- If TASTODELTOPOPREMUTO=0
- Add NUOVOINIZIOCAMPIONE,-320
- Else
- Dec NUOVOINIZIOCAMPIONE
- End If
- LIMITI[NUOVOINIZIOCAMPIONE,INIZIOCAMPIONE,FINECAMPIONE]
- NUOVOINIZIOCAMPIONE=Param : Proc AGGIUSTACAMPIONE : Proc LINEE
- POSIZIONESLIDER=(PASSO*(POSIZIONEINGRANDIMENTO-INIZIOCAMPIONE+1))/(FINECAMPIONE-INIZIOCAMPIONE+1)
- Proc SLIDERINGRANDIMENTO
- POSIZIONEINGRANDIMENTO=NUOVOINIZIOCAMPIONE-320 : Proc INGRANDISCI
- End If
- Else
- If TASTOPREMUTO$=Cright$
- If TASTODELTOPOPREMUTO=0
- Add NUOVAFINECAMPIONE,320
- Else
- Inc NUOVAFINECAMPIONE
- End If
- LIMITI[NUOVAFINECAMPIONE,INIZIOCAMPIONE,FINECAMPIONE]
- NUOVAFINECAMPIONE=Param : Proc AGGIUSTACAMPIONE : Proc LINEE
- POSIZIONESLIDER=(PASSO*(POSIZIONEINGRANDIMENTO-INIZIOCAMPIONE+1))/(FINECAMPIONE-INIZIOCAMPIONE+1)
- Proc SLIDERINGRANDIMENTO
- POSIZIONEINGRANDIMENTO=NUOVAFINECAMPIONE-319 : Proc INGRANDISCI
- End If
- If TASTOPREMUTO$=Cleft$
- If TASTODELTOPOPREMUTO=0
- Add NUOVAFINECAMPIONE,-320
- Else
- Dec NUOVAFINECAMPIONE
- End If
- LIMITI[NUOVAFINECAMPIONE,INIZIOCAMPIONE,FINECAMPIONE]
- NUOVAFINECAMPIONE=Param : Proc AGGIUSTACAMPIONE : Proc LINEE
- POSIZIONESLIDER=(PASSO*(POSIZIONEINGRANDIMENTO-INIZIOCAMPIONE+1))/(FINECAMPIONE-INIZIOCAMPIONE+1)
- Proc SLIDERINGRANDIMENTO
- POSIZIONEINGRANDIMENTO=NUOVAFINECAMPIONE-319 : Proc INGRANDISCI
- End If
- End If
- End If
- If TASTOPREMUTO$=Cup$
- ZONAATTIVA$=" Campione"+Chr$(147)+Chr$(148)
- Proc MOSTRALAZONAATTIVA
- End If
- If TASTOPREMUTO$=Cdown$
- ZONAATTIVA$="Ingrandimento"+Chr$(149)+Chr$(150)
- Proc MOSTRALAZONAATTIVA
- End If
- If TASTOPREMUTO$=" "
- Inverse On : Print At(0,ULTIMALINEA-3);"Suona"
- Proc SUONA
- End If
- If TASTOPREMUTO$="c"
- End If
- If TASTOPREMUTO$="s"
- End If
- Until TASTOPREMUTO$=Chr$(27)
- Inverse On : Print At(76,ULTIMALINEA-2);"Esci" : Wait 50
- Erase BANCO : Reserve Zone : Rainbow Del 0 : Screen Close 0 : End
- Procedure AGGIUSTACAMPIONE
- NUOVOINIZIOCAMPIONE=Min(NUOVOINIZIOCAMPIONE,NUOVAFINECAMPIONE-511)
- NUOVAFINECAMPIONE=Max(NUOVAFINECAMPIONE,NUOVOINIZIOCAMPIONE+511)
- Inverse Off
- Print At(0,8);"Inizio>Byte";NUOVOINIZIOCAMPIONE-Start(BANCO);
- Print " Fine>Byte";NUOVAFINECAMPIONE-Start(BANCO);
- LUNGHEZZACAMPIONE=NUOVAFINECAMPIONE-NUOVOINIZIOCAMPIONE+1
- LUNGHEZZACAMPIONE=Max(LUNGHEZZACAMPIONE,512)
- Print " Lunghezza>";Str$(LUNGHEZZACAMPIONE)-" ";" Byte "
- End Proc
- Procedure ARCOBALENO
- Data $FFF,$EEE,$DDD,$CCC,$BBB,$AAA,$999,$888
- Data $FFF,$EEE,$DDD,$CCC,$BBB,$AAA,$999,$888
- Set Rainbow 0,1,16,"","",""
- For LINEA=0 To 15 : Read DATO : Rain(0,LINEA)=DATO : Next LINEA
- If Ntsc Then LUNGHEZZAARCOBALENO=223 Else LUNGHEZZAARCOBALENO=271
- Rainbow 0,2,0,LUNGHEZZAARCOBALENO
- End Proc
- Procedure AZZERAFORMADONDA
- Shared LUNGHEZZASINTETICO
- For A=0 To LUNGHEZZASINTETICO-1
- F0RMADONDA(A)=0
- Next A
- End Proc
- Procedure CARICARAWOIFF
- INDIRIZZO=Start(BANCODIIO)+8
- If Peek$(INDIRIZZO,4)="8SVX"
- Add INDIRIZZO,12
- LUNGHEZZABANCO=Leek(INDIRIZZO)
- If LUNGHEZZABANCO=0
- Add INDIRIZZO,4
- LUNGHEZZABANCO=Leek(INDIRIZZO)
- Else
- Add INDIRIZZO,4
- End If
- Add INDIRIZZO,8
- FREQUENZA=Deek(INDIRIZZO)
- Add INDIRIZZO,8
- If Peek$(INDIRIZZO,4)="NAME"
- Add INDIRIZZO,4
- DATO=Leek(INDIRIZZO)
- Add INDIRIZZO,4+DATO
- End If
- If Peek$(INDIRIZZO,4)="ANNO"
- Add INDIRIZZO,4
- DATO=Leek(INDIRIZZO)
- Add INDIRIZZO,4
- ANNOTAZIONI$=Peek$(INDIRIZZO,DATO)-Chr$(0)
- Add INDIRIZZO,DATO
- End If
- If Peek$(INDIRIZZO,4)="BODY"
- Add INDIRIZZO,4
- LUNGHEZZADATI=Leek(INDIRIZZO)
- Add INDIRIZZO,4
- LUNGHEZZABANCO=Max(LUNGHEZZABANCO,LUNGHEZZADATI)
- Reserve As Chip Work BANCO,LUNGHEZZABANCO
- Copy INDIRIZZO,INDIRIZZO+LUNGHEZZABANCO-1 To Start(BANCO)
- Else
- Proc TIC[FILE$+Str$(Length(BANCODIIO))+" Byte",ULTIMALINEA-1]
- Proc TIC["è un IFF anomalo, non posso caricarlo!",ULTIMALINEA]
- Wait 200
- NOMEFILE$=""
- End If
- Else
- LUNGHEZZABANCO=Length(BANCODIIO)
- Reserve As Chip Work BANCO,LUNGHEZZABANCO
- Copy Start(BANCODIIO),Start(BANCODIIO)+LUNGHEZZABANCO-1 To Start(BANCO)
- FREQUENZA=8363
- ANNOTAZIONI$=""
- End If
- Erase BANCODIIO
- End Proc
- Procedure CARICAUNFILE
- FILE$=Fsel$("**","","Carica un campione audio","Premi Esc per uscire")
- If Exist(FILE$)
- Open In 1,FILE$
- LUNGHEZZABANCO=Max(Lof(1),512)
- Close 1
- MEMORIA=Chip Free+Fast Free
- If LUNGHEZZABANCO>MEMORIA
- Proc TIC["Non c'è memoria sufficiente per caricare il file",ULTIMALINEA-1]
- Proc TIC[FILE$,ULTIMALINEA] : Wait 200
- SENZAMEMORIA=True
- Else
- Reserve As Work BANCODIIO,LUNGHEZZABANCO
- Bload FILE$,Start(BANCODIIO)
- SEPARATORE=Instr(FILE$,":") : POSIZIONE=1
- For A=1 To Len(FILE$)
- If Instr(FILE$,"/",POSIZIONE)>0
- SEPARATORECASSETTO=Instr(FILE$,"/",POSIZIONE)
- POSIZIONE=SEPARATORECASSETTO+1
- End If
- Next A
- SEPARATORE=Max(SEPARATORE,SEPARATORECASSETTO)
- PERCORSO$=Left$(FILE$,SEPARATORE)
- If Right$(PERCORSO$,1)="/"
- PERCORSO$=Left$(PERCORSO$,Len(PERCORSO$)-1)
- End If
- NOMEFILE$=Right$(FILE$,Len(FILE$)-SEPARATORE)
- SENZAMEMORIA=False
- End If
- End If
- End Proc
- Procedure CERCALOZERO[POSIZIONE,AVANTI]
- If AVANTI=True
- Repeat
- Inc POSIZIONE
- DATO=Peek(POSIZIONE)
- Until DATO=0
- Else
- Repeat
- Dec POSIZIONE
- DATO=Peek(POSIZIONE)
- Until DATO=0
- End If
- End Proc[POSIZIONE]
- Procedure CICLO
- If CICLO=True
- Sam Loop On : Inverse On
- If GENERACAMPIONE=True
- Print At(12,8);"Ciclo" : Inverse Off
- Else
- Print At(6,ULTIMALINEA-3);"Ciclo" : Inverse Off
- End If
- Else
- Sam Loop Off : Inverse Off
- If GENERACAMPIONE=True
- Print At(12,8);"Ciclo"
- Else
- Print At(6,ULTIMALINEA-3);"Ciclo"
- End If
- End If
- End Proc
- Procedure CONDIZIONEINIZIALE
- INIZIO=True
- NUOVOINIZIOCAMPIONE=Start(BANCO)
- NUOVAFINECAMPIONE=Start(BANCO)+Length(BANCO)-1
- LUNGHEZZACAMPIONE=NUOVAFINECAMPIONE-NUOVOINIZIOCAMPIONE+1
- LUNGHEZZACAMPIONE=Max(LUNGHEZZACAMPIONE,512)
- NUOVAFREQUENZA=FREQUENZA
- Cls
- Proc MOSTRACAMPIONE
- POSIZIONEINGRANDIMENTO=NUOVOINIZIOCAMPIONE-320
- Proc INGRANDISCI
- Proc SETTALEZONE
- Proc CICLO
- Proc MESSAGGI
- Proc FILTRO
- Proc FREQUENZA
- ZONAATTIVA$=" Campione"+Chr$(147)+Chr$(148)
- Proc MOSTRALAZONAATTIVA
- Print At(0,ULTIMALINEA-4);"Sorgente>";ANNOTAZIONI$
- End Proc
- Procedure FERMACAMPIONEEDANNULLACICLOCAMPIONE
- Sam Stop : CICLO=False : Proc CICLO
- End Proc
- Procedure FILTRO
- If FILTRO=True
- Led On
- If GENERACAMPIONE=True
- Inverse On : Print At(18,8);"Filtro" : Inverse Off
- Else
- Inverse On : Print At(12,ULTIMALINEA-3);"Filtro" : Inverse Off
- End If
- Else
- Led Off
- If GENERACAMPIONE=True
- Print At(18,8);"Filtro"
- Else
- Print At(12,ULTIMALINEA-3);"Filtro"
- End If
- End If
- End Proc
- Procedure FREQUENZA
- If GENERACAMPIONE=True
- Print At(39,8);Str$(NUOVAFREQUENZA)-" ";
- Else
- Print At(14,ULTIMALINEA-5);Str$(NUOVAFREQUENZA)-" ";
- End If
- Print " Hertz "
- End Proc
- Procedure GENERACAMPIONE
- Shared ANNOTAZIONI$
- Shared FREQUENZAMASSIMA,LUNGHEZZASINTETICO,MULTIPLO#
- NOMEFILE$="Sintetico"
- GENERACAMPIONE=True
- Cls
- Proc TIC["Indica la lunghezza in multipli di 512 Byte (01-16)",ULTIMALINEA]
- RISPOSTA$=Input$(2) : RISPOSTA=Val(RISPOSTA$)
- Proc LIMITI[RISPOSTA,1,16] : RISPOSTA=Param
- LUNGHEZZASINTETICO=512*RISPOSTA
- Reserve Zone 21
- Ink 2 : Draw 0,31 To 511,31 : Draw 0,103 To 511,103 : Ink 1
- Set Zone 1,0,0 To 511,63
- Print At(0,8);Zone$("Suona",2)
- Print At(6,8);Zone$("Ferma",3)
- Print At(12,8);Zone$("Ciclo",4)
- Print At(18,8);Zone$("Filtro",5)
- Set Zone 6,0,72 To 511,135
- Print At(0,18);Zone$("Suona",7)
- Print At(6,18);"Forme d'onda:"
- Print At(6,19);Zone$("Sinusoidale",8)
- Print At(6,20);Zone$("Triangolare",9)
- Print At(6,21);Zone$("Dente di sega",10)
- Print At(6,22);Zone$("Quadra",11)
- Print At(6,23);Zone$("Disegno",12)
- Print At(20,18);"Operazioni:"
- Print At(20,19);Zone$("Somma",13)
- Print At(20,20);Zone$("Sottrai",14)
- Print At(20,21);Zone$("Inverti",15)
- Print At(20,22);Zone$("Rovescia",16)
- Print At(76,17); Using "####";1
- Hslider 0,136 To 607,143,128,0,1
- Set Zone 17,0,136 To 607,143
- Print At(25,8);Zone$("Frequenza",18);
- Print Zone$(Chr$(147)+Chr$(148),19);
- Print Zone$(Chr$(149)+Chr$(150),20);
- Print ">";Str$(NUOVAFREQUENZA)-" ";" Hertz"
- Print At(20,23);Zone$("Progressione",21)
- Proc CICLO
- Proc FILTRO
- Reserve As Chip Work BANCO,LUNGHEZZASINTETICO
- Reserve As Chip Work BANCO4,LUNGHEZZASINTETICO
- FREQUENZAMASSIMA=LUNGHEZZASINTETICO/4
- LUNGHEZZA$=Str$(LUNGHEZZASINTETICO)+" Byte"
- Print At(80-Len(LUNGHEZZA$),8);LUNGHEZZA$
- Proc TIC["Premi Esc per uscire",ULTIMALINEA]
- Repeat
- Repeat
- TASTOPREMUTO$=Inkey$
- TASTODELTOPOPREMUTO=Mouse Key
- ZONATOPO=Mouse Zone
- If TASTODELTOPOPREMUTO=1
- If DENTROZONA=False
- If ZONATOPO=2
- Inverse On : Print At(0,8);"Suona"
- Sam Raw 1,Start(BANCO),Length(BANCO),NUOVAFREQUENZA
- Sam Raw 2,Start(BANCO),Length(BANCO),NUOVAFREQUENZA
- End If
- If ZONATOPO=3
- Inverse On : Print At(6,8);"Ferma"
- Sam Stop
- End If
- If ZONATOPO=4
- CICLO= Not CICLO : Proc CICLO
- End If
- If ZONATOPO=5
- FILTRO= Not FILTRO : Proc FILTRO
- End If
- If ZONATOPO=7
- Inverse On : Print At(0,18);"Suona"
- Sam Raw 4,Start(BANCO4),Length(BANCO4),NUOVAFREQUENZA
- Sam Raw 8,Start(BANCO4),Length(BANCO4),NUOVAFREQUENZA
- End If
- If ZONATOPO=8
- Inverse On : Print At(6,19);"Sinusoidale"
- Cls 0,0,72 To 639+1,135+1
- Ink 2 : Draw 0,103 To 511,103 : Ink 1
- UNITA#=2*Pi#/LUNGHEZZASINTETICO
- For X=0 To LUNGHEZZASINTETICO-1
- DATO=Sin(UNITA#*X)*127
- Plot(X*512)/LUNGHEZZASINTETICO,103-DATO/4
- If DATO<0
- Add DATO,256
- End If
- INDIRIZZO=Start(BANCO4)+X
- Poke INDIRIZZO,DATO
- Next X
- If MULTIPLO#>1
- Proc MULTIPLO
- End If
- End If
- If ZONATOPO=9
- Inverse On : Print At(6,20);"Triangolare"
- Cls 0,0,72 To 639+1,135+1
- Ink 2 : Draw 0,103 To 511,103 : Ink 1
- For X=0 To LUNGHEZZASINTETICO-1
- If X<LUNGHEZZASINTETICO/4
- DATO=(X*512)/LUNGHEZZASINTETICO
- End If
- If X>LUNGHEZZASINTETICO/4-1 and X<LUNGHEZZASINTETICO/4*3
- DATO=((LUNGHEZZASINTETICO/2-X)*512)/LUNGHEZZASINTETICO-1
- End If
- If X>LUNGHEZZASINTETICO/4*3-1
- DATO=((X-LUNGHEZZASINTETICO)*512)/LUNGHEZZASINTETICO
- End If
- Plot(X*512)/LUNGHEZZASINTETICO,103-DATO/4
- If DATO<0
- Add DATO,256
- End If
- INDIRIZZO=Start(BANCO4)+X
- Poke INDIRIZZO,DATO
- Next X
- If MULTIPLO#>1
- Proc MULTIPLO
- End If
- End If
- If ZONATOPO=10
- Inverse On : Print At(6,21);"Dente di sega"
- Cls 0,0,72 To 639+1,135+1
- Ink 2 : Draw 0,103 To 511,103 : Ink 1
- For X=0 To LUNGHEZZASINTETICO-1
- DATO=((X/2-LUNGHEZZASINTETICO/4)*512)/LUNGHEZZASINTETICO
- Plot(X*512)/LUNGHEZZASINTETICO,103-DATO/4
- If DATO<0
- Add DATO,256
- End If
- INDIRIZZO=Start(BANCO4)+X
- Poke INDIRIZZO,DATO
- Next X
- If MULTIPLO#>1
- Proc MULTIPLO
- End If
- End If
- If ZONATOPO=11
- Inverse On : Print At(6,22);"Quadra"
- Cls 0,0,72 To 639+1,135+1
- Ink 2 : Draw 0,103 To 511,103 : Ink 1 : Gr Locate 0,103
- For X=0 To LUNGHEZZASINTETICO-1
- If X<LUNGHEZZASINTETICO/2
- DATO=127
- Else
- DATO=-128
- End If
- Polyline To(X*512)/LUNGHEZZASINTETICO,103-DATO/4
- If DATO<0
- Add DATO,256
- End If
- INDIRIZZO=Start(BANCO4)+X
- Poke INDIRIZZO,DATO
- Next X
- If MULTIPLO#>1
- Proc MULTIPLO
- End If
- End If
- If ZONATOPO=12
- Inverse On : Print At(6,23);"Disegno"
- Proc TIC["Premi il tasto destro del mouse per finire",ULTIMALINEA]
- Repeat
- TASTODELTOPOPREMUTO=Mouse Key
- ZONATOPO=Mouse Zone
- If TASTODELTOPOPREMUTO=1 and ZONATOPO=6
- XTOPO=X Screen(X Mouse) : YTOPO=Y Screen(Y Mouse)
- Ink 0 : Box XTOPO,72 To XTOPO+1,135
- Ink 2 : Draw XTOPO,103 To XTOPO+1,103
- Ink 1 : Draw XTOPO,YTOPO To XTOPO+1,YTOPO
- DATO=(103-YTOPO)*4
- If DATO<0
- Add DATO,256
- End If
- INDIRIZZO=Start(BANCO4)+XTOPO*LUNGHEZZASINTETICO/512
- For A=0 To LUNGHEZZASINTETICO/512
- Poke INDIRIZZO+A,DATO
- Next A
- End If
- Until TASTODELTOPOPREMUTO=2
- Cls 0,0,72 To 639+1,135+1
- Ink 2 : Draw 0,103 To 511,103 : Ink 1
- Gr Locate 0,103
- For X=0 To LUNGHEZZASINTETICO-1 Step LUNGHEZZASINTETICO/512
- DATO=Peek(Start(BANCO4)+X)
- If DATO>127
- Add DATO,-256
- End If
- Polyline To(X*512)/LUNGHEZZASINTETICO,103-DATO/4
- Next X
- NUOVOMESSAGGIO=True
- End If
- If ZONATOPO=13
- Inverse On : Print At(20,19);"Somma"
- Proc SOMMA
- Proc MOSTRASINTETICO
- End If
- If ZONATOPO=14
- Inverse On : Print At(20,20);"Sottrai"
- For X=0 To LUNGHEZZASINTETICO-1
- DATO=Peek(Start(BANCO4)+X)
- If DATO>127
- Add DATO,-256
- End If
- Add F0RMADONDA(X),-DATO
- Next X
- Proc MOSTRASINTETICO
- End If
- If ZONATOPO=15
- Inverse On : Print At(20,21);"Inverti"
- Cls 0,0,72 To 639+1,135+1
- Ink 2 : Draw 0,103 To 511,103 : Ink 1
- Gr Locate 0,103
- For X=0 To LUNGHEZZASINTETICO-1
- DATO=Peek(Start(BANCO4)+X)
- If DATO>127
- Add DATO,-256
- End If
- DATO= Not DATO
- Polyline To(X*512)/LUNGHEZZASINTETICO,103-DATO/4
- If DATO<0
- Add DATO,256
- End If
- INDIRIZZO=Start(BANCO4)+X
- Poke INDIRIZZO,DATO
- Next X
- End If
- If ZONATOPO=16
- Inverse On : Print At(20,22);"Rovescia"
- Cls 0,0,72 To 639+1,135+1
- Ink 2 : Draw 0,103 To 511,103 : Ink 1
- Reserve As Work BANCO3,LUNGHEZZASINTETICO
- For X=0 To LUNGHEZZASINTETICO-1
- DATO=Peek(Start(BANCO4)+X)
- INDIRIZZO=Start(BANCO3)+LUNGHEZZASINTETICO-1-X
- Poke INDIRIZZO,DATO
- If DATO>127
- Add DATO,-256
- End If
- Polyline To((LUNGHEZZASINTETICO-1-X)*512)/LUNGHEZZASINTETICO,103-DATO/4
- Next X
- Copy Start(BANCO3),Start(BANCO3)+Length(BANCO3)-1 To Start(BANCO4)
- Erase BANCO3
- End If
- If ZONATOPO=18
- Inverse On : Print At(25,8);"Frequenza"
- Proc TIC["Ripristina la frequenza originaria",ULTIMALINEA]
- NUOVAFREQUENZA=FREQUENZA
- Proc FREQUENZA
- NUOVOMESSAGGIO=True
- End If
- If ZONATOPO=19
- Inverse On : Print At(34,8);Chr$(147)+Chr$(148)
- Proc TIC["Tasto sinistro del mouse>incremento lento",ULTIMALINEA]
- Inc NUOVAFREQUENZA
- Proc LIMITI[NUOVAFREQUENZA,500,28000] : NUOVAFREQUENZA=Param
- Proc FREQUENZA
- NUOVOMESSAGGIO=True
- End If
- If ZONATOPO=20
- Inverse On : Print At(36,8);Chr$(149)+Chr$(150)
- Proc TIC["Tasto sinistro del mouse>decremento lento",ULTIMALINEA]
- Dec NUOVAFREQUENZA
- Proc LIMITI[NUOVAFREQUENZA,500,28000] : NUOVAFREQUENZA=Param
- Proc FREQUENZA
- NUOVOMESSAGGIO=True
- End If
- If ZONATOPO=21
- Inverse On : Print At(20,23);"Progressione"
- Proc TIC["Progressione aritmetica o geometrica (a/g)?",ULTIMALINEA]
- RISPOSTA$=Input$(1) : RISPOSTA$=Lower$(RISPOSTA$)
- If RISPOSTA$="a"
- PROGRESSIONE$="Aritmetica"
- End If
- If RISPOSTA$="g"
- PROGRESSIONE$="Geometrica"
- End If
- If PROGRESSIONE$="Aritmetica" or PROGRESSIONE$="Geometrica"
- Locate 0,ULTIMALINEA : Ink 0 : Bar 0,248 To 639,255 : Ink 1
- Input "Inizio della progressione (1-"+Str$(FREQUENZAMASSIMA)-" "+")?";RISPOSTA$;
- Curs Off
- If RISPOSTA$<>""
- PRIMOTERMINE=Val(RISPOSTA$)
- Proc LIMITI[PRIMOTERMINE,1,FREQUENZAMASSIMA] : PRIMOTERMINE=Param
- Locate 0,ULTIMALINEA : Ink 0 : Bar 0,248 To 639,255 : Ink 1
- Input "Fine della progressione (1-"+Str$(FREQUENZAMASSIMA)-" "+")?";RISPOSTA$;
- Curs Off
- If RISPOSTA$<>""
- ULTIMOTERMINE=Val(RISPOSTA$)
- Proc LIMITI[ULTIMOTERMINE,1,FREQUENZAMASSIMA] : ULTIMOTERMINE=Param
- Locate 0,ULTIMALINEA : Ink 0 : Bar 0,248 To 639,255 : Ink 1
- Input "Numero di valori intermedi (1-126)?";RISPOSTA$;
- Curs Off
- If RISPOSTA$<>""
- VLORIINTERMEDI=Val(RISPOSTA$) : VLORITOTALI=VLORIINTERMEDI+2
- Proc LIMITI[VLORITOTALI,3,128] : VLORITOTALI=Param
- If PROGRESSIONE$="Aritmetica"
- RAGIONE#=(ULTIMOTERMINE-PRIMOTERMINE)/(VLORITOTALI-1*1.0)
- For A=1 To VLORITOTALI
- If A=VLORITOTALI
- MULTIPLO#=ULTIMOTERMINE
- Else
- MULTIPLO#=RAGIONE#*(A-1)+PRIMOTERMINE
- End If
- Proc TIC["Valore"+Str$(A)+":"+Str$(MULTIPLO#),ULTIMALINEA]
- Proc MULTIPLO
- Cls 0,0,72 To 639+1,135+1
- Ink 2 : Draw 0,103 To 511,103 : Ink 1
- Proc SOMMA
- Next A
- For A=0 To LUNGHEZZASINTETICO-1 Step 4
- Loke Start(BANCO4)+A,0
- Next A
- Proc MOSTRASINTETICO
- End If
- If PROGRESSIONE$="Geometrica"
- RAGIONE#=(ULTIMOTERMINE/PRIMOTERMINE)^(1.0/(VLORITOTALI-1))
- For A=1 To VLORITOTALI
- If A=VLORITOTALI
- MULTIPLO#=ULTIMOTERMINE
- Else
- MULTIPLO#=RAGIONE#^(A-1)*PRIMOTERMINE
- End If
- Proc TIC["Valore"+Str$(A)+":"+Str$(MULTIPLO#),ULTIMALINEA]
- Proc MULTIPLO
- Cls 0,0,72 To 639+1,135+1
- Ink 2 : Draw 0,103 To 511,103 : Ink 1
- Proc SOMMA
- Next A
- For A=0 To LUNGHEZZASINTETICO-1 Step 4
- Loke Start(BANCO4)+A,0
- Next A
- Proc MOSTRASINTETICO
- End If
- End If
- End If
- End If
- End If
- PROGRESSIONE$=""
- NUOVOMESSAGGIO=True
- End If
- DENTROZONA=True
- End If
- If ZONATOPO=17
- MULTIPLO#=X Screen(X Mouse)/(607.0/FREQUENZAMASSIMA)
- Hslider 0,136 To 607,143,FREQUENZAMASSIMA,MULTIPLO#,1 : Wait Vbl
- MULTIPLO#=MULTIPLO#+1 : Print At(76,17); Using "####";MULTIPLO#
- End If
- Else If TASTODELTOPOPREMUTO=2
- If ZONATOPO=19
- Inverse On
- Print At(34,8);Chr$(147)+Chr$(148)
- Proc TIC["Tasto sinistro del mouse>incremento veloce",ULTIMALINEA]
- Inc NUOVAFREQUENZA
- Proc LIMITI[NUOVAFREQUENZA,500,28000] : NUOVAFREQUENZA=Param
- Proc FREQUENZA
- NUOVOMESSAGGIO=True
- End If
- If ZONATOPO=20
- Inverse On
- Print At(36,8);Chr$(149)+Chr$(150)
- Proc TIC["Tasto sinistro del mouse>decremento veloce",ULTIMALINEA]
- Dec NUOVAFREQUENZA
- Proc LIMITI[NUOVAFREQUENZA,500,28000] : NUOVAFREQUENZA=Param
- Proc FREQUENZA
- NUOVOMESSAGGIO=True
- End If
- Else
- Inverse Off
- Print At(0,8);"Suona"
- Print At(6,8);"Ferma"
- Print At(25,8);"Frequenza"+Chr$(147)+Chr$(148)+Chr$(149)+Chr$(150)
- Print At(0,18);"Suona"
- Print At(6,19);"Sinusoidale"
- Print At(6,20);"Triangolare"
- Print At(6,21);"Dente di sega"
- Print At(6,22);"Quadra"
- Print At(6,23);"Disegno"
- Print At(20,19);"Somma"
- Print At(20,20);"Sottrai"
- Print At(20,21);"Inverti"
- Print At(20,22);"Rovescia"
- Print At(20,23);"Progressione"
- If NUOVOMESSAGGIO=True
- Proc TIC["Premi Esc per uscire",ULTIMALINEA]
- NUOVOMESSAGGIO=False
- End If
- DENTROZONA=False
- End If
- Until TASTOPREMUTO$<>""
- Until TASTOPREMUTO$=Chr$(27)
- Erase BANCO4
- Proc AZZERAFORMADONDA
- ANNOTAZIONI$="SamplesMaster by Stefano Regattin"
- End Proc
- Procedure INGRANDISCI
- Cls 0,0,72 To 639+1,72+ALTEZZA+1
- Ink 2 : Draw 0,72+ZERO To 639,72+ZERO : Ink 1
- Clip 0,72 To 639,72+ALTEZZA
- Gr Locate 0,72+ZERO
- For X=0 To 639
- POSIZIONE=POSIZIONEINGRANDIMENTO+X
- DATO=Peek(POSIZIONE)
- If DATO>127
- Add DATO,-256
- End If
- If POSIZIONE>=Start(BANCO) and POSIZIONE<=Start(BANCO)+Length(BANCO)-1
- If POSIZIONE=Start(BANCO)+Length(BANCO)-1
- Polyline X,72+ZERO-DATO To X,72+ZERO
- Else
- Polyline To X,72+ZERO-DATO : Y=Ygr
- End If
- Else
- Gr Locate X+1,72+ZERO
- End If
- If POSIZIONE=NUOVOINIZIOCAMPIONE
- Gr Writing 2 : Draw X,72 To X,72+ALTEZZA
- Gr Writing 1 : Gr Locate X,Y
- End If
- If POSIZIONE=NUOVAFINECAMPIONE
- Gr Writing 2 : Draw X,72 To X,72+ALTEZZA
- Draw X+3,72 To X+7,72
- Draw X+3,74 To X+7,74
- Draw X+3,72 To X+3,76
- Gr Writing 1 : Gr Locate X,Y
- End If
- Next X
- Clip
- End Proc
- Procedure INIZIO
- If INIZIO=True
- Inverse On : Print At(39,ULTIMALINEA-2);"Inizio" : Inverse Off
- Print At(46,ULTIMALINEA-2);"Fine"
- Else
- Print At(39,ULTIMALINEA-2);"Inizio"
- Inverse On : Print At(46,ULTIMALINEA-2);"Fine" : Inverse Off
- End If
- End Proc
- Procedure LIMITI[NUMERO,LIMITEMINIMO,LIMITEMASSIMO]
- '-> Limiti by Stefano Regattin
- 'i> 19 maggio 1996
- 'm> 12 giugno 1996
- '--------------------------------------------------------
- 'La procedura equivale alle seguenti linee di programma:
- ' If NUMERO<LIMITEMINIMO Then NUMERO=LIMITEMINIMO
- ' If NUMERO>LIMITEMASSIMO Then NUMERO=LIMITEMASSIMO
- 'Se LIMITEMINIMO è maggiore di LIMITEMASSIMO ne scambia i valori
- '----------------------------------------------------------------
- If LIMITEMINIMO>LIMITEMASSIMO Then Swap LIMITEMINIMO,LIMITEMASSIMO
- NUMERO=Max(Min(NUMERO,LIMITEMASSIMO),LIMITEMINIMO)
- End Proc[NUMERO]
- Procedure LINEE
- Gr Writing 2 : Draw XLINEAINIZIOCAMPIONE,0 To XLINEAINIZIOCAMPIONE,63
- XLINEAINIZIOCAMPIONE=(NUOVOINIZIOCAMPIONE-INIZIOCAMPIONE)/PASSO
- Draw XLINEAINIZIOCAMPIONE,0 To XLINEAINIZIOCAMPIONE,63
- Draw XLINEAFINECAMPIONE,0 To XLINEAFINECAMPIONE,63
- XLINEAFINECAMPIONE=(NUOVAFINECAMPIONE-INIZIOCAMPIONE)/PASSO
- Draw XLINEAFINECAMPIONE,0 To XLINEAFINECAMPIONE,63 : Gr Writing 1
- End Proc
- Procedure MARCAALVOLO
- Proc TIC["Premi la barra di spazio per marcare l'inizio",ULTIMALINEA]
- Proc SUONA
- Timer=0
- TEMP0RIZZAZIONE=NUOVAFREQUENZA/50
- XINIZIO=XLINEAINIZIOCAMPIONE
- Gr Writing 2
- Draw XLINEAFINECAMPIONE,0 To XLINEAFINECAMPIONE,63
- Gr Writing 1
- Repeat
- Gr Writing 2 : Draw XINIZIO,0 To XINIZIO,63 : Gr Writing 1
- TEMP0=Timer*TEMP0RIZZAZIONE
- X=XLINEAINIZIOCAMPIONE+TEMP0/PASSO
- TASTOPREMUTO$=Inkey$
- If TASTOPREMUTO$=" "
- NUOVOINIZIOCAMPIONE=Start(BANCO)+TEMP0
- XLINEAINIZIOCAMPIONE=X
- Gr Writing 2
- Draw XLINEAINIZIOCAMPIONE,0 To XLINEAINIZIOCAMPIONE,63
- Gr Writing 1
- SPAZIOPREMUTO=1
- Exit
- End If
- Gr Writing 2 : Draw X,0 To X,63 : Gr Writing 1
- XINIZIO=X
- Until TEMP0>LUNGHEZZACAMPIONE
- If TEMP0<LUNGHEZZACAMPIONE
- Proc TIC["Premi la barra di spazio per marcare la fine",ULTIMALINEA]
- Gr Writing 2 : Draw X,0 To X,63 : Gr Writing 1
- XFINE=X
- Repeat
- Gr Writing 2 : Draw XFINE,0 To XFINE,63 : Gr Writing 1
- TEMP0=Timer*TEMP0RIZZAZIONE
- X=TEMP0/PASSO
- TASTOPREMUTO$=Inkey$
- If TASTOPREMUTO$=" "
- NUOVAFINECAMPIONE=Start(BANCO)+TEMP0
- XLINEAFINECAMPIONE=X
- Gr Writing 2
- Draw XLINEAFINECAMPIONE,0 To XLINEAFINECAMPIONE,63
- Gr Writing 1
- SPAZIOPREMUTO=2
- Exit
- End If
- Gr Writing 2 : Draw X,0 To X,63 : Gr Writing 1
- XFINE=X
- Until TEMP0>LUNGHEZZACAMPIONE
- End If
- If SPAZIOPREMUTO=1
- Gr Writing 2 : Draw XFINE,0 To XFINE,63 : Gr Writing 1
- Else If SPAZIOPREMUTO=0
- Gr Writing 2
- Draw XINIZIO,0 To XINIZIO,63
- Draw XLINEAINIZIOCAMPIONE,0 To XLINEAINIZIOCAMPIONE,63
- Draw XLINEAFINECAMPIONE,0 To XLINEAFINECAMPIONE,63
- Gr Writing 1
- End If
- End Proc
- Procedure MESSAGGI
- Proc TIC[NOMEFILE$+Str$(Length(BANCO))+" Byte",ULTIMALINEA-1]
- Proc TIC[Chr$(147)+Chr$(148)+" "+Chr$(149)+Chr$(150)+" zona attiva "+Chr$(151)+Chr$(152)+" "+Chr$(153)+Chr$(154)+" spostamento Esc Esci",ULTIMALINEA]
- End Proc
- Procedure MISCELATIMBRI
- Shared ANNOTAZIONI$
- Proc FERMACAMPIONEEDANNULLACICLOCAMPIONE
- Cls
- FILE$=Fsel$("**","","Carica il primo campione audio","Premi Esc per uscire")
- If FILE$="" Then Pop Proc
- If Exist(FILE$)
- Open In 1,FILE$
- LUNGHEZZABANCO=Max(Lof(1),512)
- Close 1
- MEMORIA=Chip Free+Fast Free
- If LUNGHEZZABANCO>MEMORIA
- Proc TIC["Non c'è memoria sufficiente per caricare il file",ULTIMALINEA-1]
- Proc TIC[FILE$,ULTIMALINEA] : Wait 200
- SENZAMEMORIA=True
- Else
- Reserve As Work BANCODIIO,LUNGHEZZABANCO
- Bload FILE$,Start(BANCODIIO)
- SENZAMEMORIA=False
- Proc CARICARAWOIFF
- LUNGHEZZABANCO1=LUNGHEZZABANCO
- Reserve As Chip Work BANCO3,LUNGHEZZABANCO1
- Copy Start(BANCO),Start(BANCO)+LUNGHEZZABANCO-1 To Start(BANCO3)
- End If
- End If
- FILE$=Fsel$("**","","Carica il secondo campione audio","Premi Esc per uscire")
- If FILE$="" Then Pop Proc
- If Exist(FILE$)
- Open In 1,FILE$
- LUNGHEZZABANCO=Max(Lof(1),512)
- Close 1
- MEMORIA=Chip Free+Fast Free
- If LUNGHEZZABANCO>MEMORIA
- Proc TIC["Non c'è memoria sufficiente per caricare il file",ULTIMALINEA-1]
- Proc TIC[FILE$,ULTIMALINEA] : Wait 200
- SENZAMEMORIA=True
- Else
- Reserve As Work BANCODIIO,LUNGHEZZABANCO
- Bload FILE$,Start(BANCODIIO)
- SENZAMEMORIA=False
- Proc CARICARAWOIFF
- LUNGHEZZABANCO2=LUNGHEZZABANCO
- Reserve As Chip Work BANCO4,LUNGHEZZABANCO2
- Copy Start(BANCO),Start(BANCO)+LUNGHEZZABANCO-1 To Start(BANCO4)
- End If
- End If
- LUNGHEZZABANCO=Max(LUNGHEZZABANCO1,LUNGHEZZABANCO2)
- If LUNGHEZZABANCO1=0 or LUNGHEZZABANCO2=0
- Proc TIC["Devi scegliere due campioni audio!",ULTIMALINEA]
- Wait 200 : Pop Proc
- End If
- If SENZAMEMORIA=True Then Pop Proc
- Reserve As Chip Work BANCO,LUNGHEZZABANCO
- GENERACAMPIONE=True
- Reserve Zone 8
- MOSTRACAMPIONEPERMISCELAZIONE[BANCO3,0]
- MOSTRACAMPIONEPERMISCELAZIONE[BANCO4,72]
- Print At(0,8);Zone$("Suona",1)
- Print At(6,8);Zone$("Ferma",2)
- Print At(12,8);Zone$("Ciclo",3)
- Print At(51,8);"Lunghezza>";Str$(Length(BANCO3))-" ";" Byte"
- Print At(18,8);Zone$("Filtro",4)
- Print At(0,17);Zone$("Suona",5)
- Print At(6,17);"Lunghezza>";Str$(Length(BANCO4))-" ";" Byte"
- Print At(25,8);Zone$("Frequenza",6);
- Print Zone$(Chr$(147)+Chr$(148),7);
- Print Zone$(Chr$(149)+Chr$(150),8);
- Print ">";Str$(NUOVAFREQUENZA)-" ";" Hertz"
- Proc CICLO
- Proc FILTRO
- Proc TIC["Spazio->miscela i due campioni Esc->esci",ULTIMALINEA]
- Repeat
- Repeat
- TASTOPREMUTO$=Inkey$
- TASTODELTOPOPREMUTO=Mouse Key
- ZONATOPO=Mouse Zone
- If TASTODELTOPOPREMUTO=1
- If DENTROZONA=False
- If ZONATOPO=1
- Inverse On : Print At(0,8);"Suona"
- Sam Raw 1,Start(BANCO3),Length(BANCO3),NUOVAFREQUENZA
- Sam Raw 2,Start(BANCO3),Length(BANCO3),NUOVAFREQUENZA
- End If
- If ZONATOPO=2
- Inverse On : Print At(6,8);"Ferma"
- Sam Stop
- End If
- If ZONATOPO=3
- CICLO= Not CICLO : Proc CICLO
- End If
- If ZONATOPO=4
- FILTRO= Not FILTRO : Proc FILTRO
- End If
- If ZONATOPO=5
- Inverse On : Print At(0,17);"Suona"
- Sam Raw 4,Start(BANCO4),Length(BANCO4),NUOVAFREQUENZA
- Sam Raw 8,Start(BANCO4),Length(BANCO4),NUOVAFREQUENZA
- End If
- If ZONATOPO=6
- Proc TIC["Ripristina la frequenza originaria",ULTIMALINEA]
- NUOVAFREQUENZA=FREQUENZA
- Proc FREQUENZA
- NUOVOMESSAGGIO=True
- End If
- If ZONATOPO=7
- Inverse On : Print At(34,8);Chr$(147)+Chr$(148)
- Proc TIC["Tasto sinistro del mouse>incremento lento",ULTIMALINEA]
- Inc NUOVAFREQUENZA
- Proc LIMITI[NUOVAFREQUENZA,500,28000] : NUOVAFREQUENZA=Param
- Proc FREQUENZA
- NUOVOMESSAGGIO=True
- End If
- If ZONATOPO=8
- Inverse On : Print At(36,8);Chr$(149)+Chr$(150)
- Proc TIC["Tasto sinistro del mouse>decremento lento",ULTIMALINEA]
- Dec NUOVAFREQUENZA
- Proc LIMITI[NUOVAFREQUENZA,500,28000] : NUOVAFREQUENZA=Param
- Proc FREQUENZA
- NUOVOMESSAGGIO=True
- End If
- DENTROZONA=True
- End If
- Else If TASTODELTOPOPREMUTO=2
- If ZONATOPO=7
- Inverse On
- Print At(34,8);Chr$(147)+Chr$(148)
- Proc TIC["Tasto sinistro del mouse>incremento veloce",ULTIMALINEA]
- Inc NUOVAFREQUENZA
- Proc LIMITI[NUOVAFREQUENZA,500,28000] : NUOVAFREQUENZA=Param
- Proc FREQUENZA
- NUOVOMESSAGGIO=True
- End If
- If ZONATOPO=8
- Inverse On
- Print At(36,8);Chr$(149)+Chr$(150)
- Proc TIC["Tasto sinistro del mouse>decremento veloce",ULTIMALINEA]
- Dec NUOVAFREQUENZA
- Proc LIMITI[NUOVAFREQUENZA,500,28000] : NUOVAFREQUENZA=Param
- Proc FREQUENZA
- NUOVOMESSAGGIO=True
- End If
- Else
- Inverse Off
- Print At(0,8);"Suona"
- Print At(6,8);"Ferma"
- Print At(25,8);"Frequenza"+Chr$(147)+Chr$(148)+Chr$(149)+Chr$(150)
- Print At(0,17);"Suona"
- If NUOVOMESSAGGIO=True
- Proc TIC["Spazio->miscela i due campioni Esc->esci",ULTIMALINEA]
- NUOVOMESSAGGIO=False
- End If
- DENTROZONA=False
- End If
- Until TASTOPREMUTO$<>""
- If TASTOPREMUTO$=Chr$(27) Then Pop Proc
- Until TASTOPREMUTO$=" "
- Proc TIC["Vuoi la dissolvenza da un campione all'altro (s/n)?",ULTIMALINEA]
- RISPOSTA$=Input$(1) : RISPOSTA$=Lower$(RISPOSTA$)
- If RISPOSTA$<>"s" and RISPOSTA$<>"n" Then Pop Proc
- If RISPOSTA$="s"
- If LUNGHEZZABANCO1>LUNGHEZZABANCO2
- SCELTA=1
- Else If LUNGHEZZABANCO1=LUNGHEZZABANCO2
- Repeat
- Proc TIC["I 2 campioni sono lunghi uguali; quale scegli come campione di partenza (1/2)?",ULTIMALINEA]
- SCELTA$=Input$(1) : SCELTA=Val(SCELTA$)
- Until SCELTA=1 or SCELTA=2
- Else
- SCELTA=2
- End If
- Proc TIC["Sto miscelando i due campioni...",ULTIMALINEA]
- LUNGHEZZAMISCELAZIONE=Max(LUNGHEZZABANCO1,LUNGHEZZABANCO2)
- For INDIRIZZO=0 To LUNGHEZZAMISCELAZIONE-1
- VLOREPERCENTUALE=(INDIRIZZO*100)/(LUNGHEZZAMISCELAZIONE-1)
- DATO1=Peek(Start(BANCO3)+INDIRIZZO)
- If DATO1>127
- Add DATO1,-256
- End If
- DATO2=Peek(Start(BANCO4)+INDIRIZZO)
- If DATO2>127
- Add DATO2,-256
- End If
- If SCELTA=1
- DATO1=(DATO1*VLOREPERCENTUALE)/100
- If INDIRIZZO<=LUNGHEZZABANCO2
- DATO2=(DATO2*(100-VLOREPERCENTUALE))/100
- Else
- DATO2=0
- End If
- Else
- If INDIRIZZO<=LUNGHEZZABANCO1
- DATO1=(DATO1*(100-VLOREPERCENTUALE))/100
- Else
- DATO1=0
- End If
- DATO2=(DATO2*VLOREPERCENTUALE)/100
- End If
- DATOMISCELAZIONE=(DATO1+DATO2)/2
- If DATOMISCELAZIONE<0
- Add DATOMISCELAZIONE,256
- End If
- Poke Start(BANCO)+INDIRIZZO,DATOMISCELAZIONE
- XBARRAPROGRESSO=(80*INDIRIZZO)/(LUNGHEZZAMISCELAZIONE-1)
- Inverse On : Print At(XBARRAPROGRESSO,ULTIMALINEA-1);" "; : Inverse Off
- Next INDIRIZZO
- End If
- If RISPOSTA$="n"
- Proc TIC["Sto miscelando i due campioni...",ULTIMALINEA]
- LUNGHEZZAMISCELAZIONE=Min(LUNGHEZZABANCO1,LUNGHEZZABANCO2)
- For INDIRIZZO=0 To LUNGHEZZAMISCELAZIONE-1
- DATO1=Peek(Start(BANCO3)+INDIRIZZO)
- DATO2=Peek(Start(BANCO4)+INDIRIZZO)
- If DATO1>127
- Add DATO1,-256
- End If
- If DATO2>127
- Add DATO2,-256
- End If
- DATOMISCELAZIONE=(DATO1+DATO2)/2
- If DATOMISCELAZIONE<0
- Add DATOMISCELAZIONE,256
- End If
- Poke Start(BANCO)+INDIRIZZO,DATOMISCELAZIONE
- XBARRAPROGRESSO=(80*INDIRIZZO)/(LUNGHEZZAMISCELAZIONE-1)
- Inverse On : Print At(XBARRAPROGRESSO,ULTIMALINEA-1);" "; : Inverse Off
- Next INDIRIZZO
- End If
- ANNOTAZIONI$="SamplesMaster by Stefano Regattin"
- End Proc
- Procedure MOSTRACAMPIONE
- INIZIOCAMPIONE=NUOVOINIZIOCAMPIONE : FINECAMPIONE=NUOVAFINECAMPIONE
- PASSO=(FINECAMPIONE-INIZIOCAMPIONE+1)/640+1 : PASSO=Max(PASSO,1)
- Cls 0,0,0 To 639+1,63+1 : Ink 2 : Draw 0,31 To 639,31 : Gr Locate 0,31 : Ink 1
- For INDIRIZZO=INIZIOCAMPIONE To FINECAMPIONE Step PASSO
- DATO=Peek(INDIRIZZO) : If DATO>127 Then Add DATO,-256
- Polyline To X,31-DATO/4 : Inc X
- Next INDIRIZZO
- XLINEAINIZIOCAMPIONE=0 : XLINEAFINECAMPIONE=X-1
- Gr Writing 2 : Draw XLINEAINIZIOCAMPIONE,0 To XLINEAINIZIOCAMPIONE,63
- Draw XLINEAFINECAMPIONE,0 To XLINEAFINECAMPIONE,63 : Gr Writing 1
- Inverse Off : Print At(0,8);"Inizio>Byte";INIZIOCAMPIONE-Start(BANCO);
- Print " Fine>Byte";FINECAMPIONE-Start(BANCO);
- Print " Lunghezza>";Str$(LUNGHEZZACAMPIONE)-" ";" Byte "
- DIVISIONESLIDERINGRANDIMENTO#=640.0/PASSO
- End Proc
- Procedure MOSTRACAMPIONEPERMISCELAZIONE[B,P]
- IC=Start(B) : FC=Start(B)+Length(B)-1
- PASSO=(FC-IC+1)/640+1 : PASSO=Max(PASSO,1)
- Ink 2 : Draw 0,P+31 To 639,P+31 : Gr Locate 0,P+31 : Ink 1
- For INDIRIZZO=IC To FC Step PASSO
- DATO=Peek(INDIRIZZO) : If DATO>127 Then Add DATO,-256
- Polyline To X,P+31-DATO/4 : Inc X
- Next INDIRIZZO
- End Proc
- Procedure MOSTRASINTETICO
- Shared LUNGHEZZASINTETICO
- Cls 0,0,0 To 511+1,63+1
- Ink 2 : Draw 0,31 To 511,31 : Ink 1
- Gr Locate 0,31 : DIVISORE=1
- For X=0 To LUNGHEZZASINTETICO-1
- DATO=F0RMADONDA(X)/DIVISORE
- If DATO>127 or DATO<-128
- Cls 0,0,0 To 511+1,63+1
- Ink 2 : Draw 0,31 To 511,31 : Ink 1
- Gr Locate 0,31 : Inc DIVISORE : X=-1
- End If
- If X>-1
- Polyline To(X*512)/LUNGHEZZASINTETICO,31-DATO/4
- If DATO<0
- Add DATO,256
- End If
- Poke Start(BANCO)+X,DATO
- End If
- Next X
- End Proc
- Procedure MOSTRALAZONAATTIVA
- Print At(65,8);ZONAATTIVA$
- End Proc
- Procedure MULTIPLO
- Shared FREQUENZAMASSIMA,LUNGHEZZASINTETICO,MULTIPLO#
- Reserve As Work BANCO3,LUNGHEZZASINTETICO
- Repeat
- For X=0 To LUNGHEZZASINTETICO-1 Step MULTIPLO#
- DATO=Peek(Start(BANCO4)+X)
- INDIRIZZO=Start(BANCO3)+M
- Poke INDIRIZZO,DATO : Inc M : Exit If M=LUNGHEZZASINTETICO
- Next X
- Until M=LUNGHEZZASINTETICO
- Gr Locate 0,103
- For X=0 To LUNGHEZZASINTETICO-1
- DATO=Peek(Start(BANCO3)+X)
- INDIRIZZO=Start(BANCO4)+X
- Poke INDIRIZZO,DATO
- If DATO>127
- Add DATO,-256
- End If
- Polyline To(X*512)/LUNGHEZZASINTETICO,103-DATO/4
- Next X
- Erase BANCO3
- Inverse Off
- Hslider 0,136 To 607,143,FREQUENZAMASSIMA,MULTIPLO#,1
- Print At(76,17); Using "####";MULTIPLO#
- End Proc
- Procedure SALVAUNFILE
- FILE$=Fsel$("**",NOMEFILE$,"Salva un campione audio","Premi Esc per uscire")
- If FILE$<>""
- Proc TIC["Vuoi salvarlo come file IFF (s/n) ?",ULTIMALINEA]
- RISPOSTA$=Input$(1) : RISPOSTA$=Lower$(RISPOSTA$)
- If RISPOSTA$="s"
- Proc TIC["Sto salvando il campione audio IFF",ULTIMALINEA-1]
- Proc TIC[FILE$,ULTIMALINEA]
- LUNGHEZZANOME=Len(NOMEFILE$)/4*4
- RESTONOME=Len(NOMEFILE$) mod 4
- If RESTONOME>0
- Add LUNGHEZZANOME,4
- End If
- LUNGHEZZAANNO=40
- LUNGHEZZABANCO=40+8+LUNGHEZZAANNO+8+LUNGHEZZACAMPIONE
- If NOMEFILE$<>""
- Add LUNGHEZZABANCO,8+LUNGHEZZANOME
- End If
- LUNGHEZZABANCOPARI=LUNGHEZZABANCO mod 2
- If LUNGHEZZABANCOPARI=1
- Inc LUNGHEZZABANCO
- End If
- Reserve As Work BANCODIIO,LUNGHEZZABANCO
- INDIRIZZO=Start(BANCODIIO)
- Poke$ INDIRIZZO,"FORM"
- Add INDIRIZZO,4
- Loke INDIRIZZO,LUNGHEZZABANCO-8
- Add INDIRIZZO,4
- Poke$ INDIRIZZO,"8SVXVHDR"
- Add INDIRIZZO,8
- Loke INDIRIZZO,20
- Add INDIRIZZO,4
- Loke INDIRIZZO,0
- Add INDIRIZZO,4
- Loke INDIRIZZO,LUNGHEZZACAMPIONE
- Add INDIRIZZO,4
- Loke INDIRIZZO,0
- Add INDIRIZZO,4
- Doke INDIRIZZO,NUOVAFREQUENZA
- Add INDIRIZZO,2
- Doke INDIRIZZO,256
- Add INDIRIZZO,2
- Doke INDIRIZZO,256
- Add INDIRIZZO,2
- Doke INDIRIZZO,0
- Add INDIRIZZO,2
- If NOMEFILE$<>""
- Poke$ INDIRIZZO,"NAME"
- Add INDIRIZZO,4
- Loke INDIRIZZO,LUNGHEZZANOME
- Add INDIRIZZO,4
- Poke$ INDIRIZZO,NOMEFILE$
- Add INDIRIZZO,Len(NOMEFILE$)
- If RESTONOME>0
- ZERINELNOME=4-RESTONOME
- Inverse On
- For A=1 To ZERINELNOME
- Poke INDIRIZZO,0
- Inc INDIRIZZO
- Next A
- End If
- End If
- Poke$ INDIRIZZO,"ANNO"
- Add INDIRIZZO,4
- Loke INDIRIZZO,LUNGHEZZAANNO
- Add INDIRIZZO,4
- Poke$ INDIRIZZO,"SamplesMaster by Stefano Maria Regattin"+Chr$(0)
- Add INDIRIZZO,LUNGHEZZAANNO
- Poke$ INDIRIZZO,"BODY"
- Add INDIRIZZO,4
- Loke INDIRIZZO,LUNGHEZZACAMPIONE
- Add INDIRIZZO,4
- Copy INIZIOCAMPIONE,FINECAMPIONE To INDIRIZZO
- Add INDIRIZZO,LUNGHEZZACAMPIONE+LUNGHEZZABANCOPARI
- If INDIRIZZO=Start(BANCODIIO)+Length(BANCODIIO)
- Proc TIC["Conversione campione audio da RAW ad IFF avvenuta",ULTIMALINEA]
- Else
- Proc TIC["Conversione campione audio da RAW ad IFF fallita!",ULTIMALINEA]
- Erase BANCODIIO
- Wait 200
- Pop Proc
- End If
- Bsave FILE$,Start(BANCODIIO) To Start(BANCODIIO)+Length(BANCODIIO)
- Erase BANCODIIO
- Else
- Proc TIC["Sto salvando il campione audio RAW",ULTIMALINEA-1]
- Proc TIC[FILE$,ULTIMALINEA]
- Bsave FILE$,INIZIOCAMPIONE To FINECAMPIONE+1
- End If
- Wait 200
- End If
- End Proc
- Procedure SETTALEZONE
- Reserve Zone 22
- Print At(0,ULTIMALINEA-3);Zone$("Suona",1)
- Print At(0,ULTIMALINEA-2);Zone$("Ferma",2)
- Print At(6,ULTIMALINEA-3);Zone$("Ciclo",3)
- Print At(12,ULTIMALINEA-3);Zone$("Filtro",4)
- Print At(21,ULTIMALINEA-3);"Mostra campione"
- Print At(19,ULTIMALINEA-2);Zone$("Tutto",5)
- Print At(26,ULTIMALINEA-2);Zone$("Tra le linee",6)
- Print At(40,ULTIMALINEA-3);"Posizione"
- Inverse On : Print At(39,ULTIMALINEA-2);Zone$("Inizio",7) : Inverse Off
- Print At(46,ULTIMALINEA-2);Zone$("Fine",8)
- Print At(53,ULTIMALINEA-3);"Cerca lo zero"
- Print At(51,ULTIMALINEA-2);Zone$("<Indietro",9)
- Print At(61,ULTIMALINEA-2);Zone$("Avanti>",10)
- Print At(69,ULTIMALINEA-3);Zone$("Carica",11)
- Set Zone 12,0,72 To 639,72+ALTEZZA
- Set Zone 13,0,0 To 639,63
- Print At(6,ULTIMALINEA-2);Zone$("Genera",14)
- Print At(69,ULTIMALINEA-2);Zone$("Salva",15)
- Print At(76,ULTIMALINEA-2);Zone$("Esci",16)
- Set Zone 17,0,72+ALTEZZA+1 To 639,72+ALTEZZA+1+7
- YSLIDERINGRANDIMENTO=72+ALTEZZA+1
- Hslider 0,YSLIDERINGRANDIMENTO To 639,YSLIDERINGRANDIMENTO+7,PASSO,0,1
- Print At(0,ULTIMALINEA-5);Zone$("Frequenza",18);
- Print Zone$(Chr$(147)+Chr$(148),19);
- Print Zone$(Chr$(149)+Chr$(150),20);
- Print ">"
- Print At(26,ULTIMALINEA-5);Zone$("MixTimbri",21)
- Print At(36,ULTIMALINEA-5);Zone$("MarcaAlVolo",22)
- End Proc
- Procedure SETTASCHERMO
- If Ntsc Then LUNGHEZZASCHERMO=200 Else LUNGHEZZASCHERMO=256
- If Ntsc Then RIDUZIONE=4 Else RIDUZIONE=2
- ALTEZZA=256/RIDUZIONE-1 : ZERO=128/RIDUZIONE-1
- ULTIMALINEA=LUNGHEZZASCHERMO/8-1
- Screen Open 0,640,LUNGHEZZASCHERMO,4,Hires : Curs Off : Flash Off
- Palette $60,$CCC,$C00,$C0 : Pen 1 : Paper 0 : Cls : Curs Pen 1
- Wait Vbl : Limit Mouse
- End Proc
- Procedure SLIDERINGRANDIMENTO
- Hslider 0,YSLIDERINGRANDIMENTO To 639,YSLIDERINGRANDIMENTO+7,PASSO,POSIZIONESLIDER,1
- End Proc
- Procedure SOMMA
- Shared LUNGHEZZASINTETICO
- For X=0 To LUNGHEZZASINTETICO-1
- DATO=Peek(Start(BANCO4)+X)
- If DATO>127
- Add DATO,-256
- End If
- Add F0RMADONDA(X),DATO
- Next X
- End Proc
- Procedure SUONA
- Sam Raw 1,NUOVOINIZIOCAMPIONE,LUNGHEZZACAMPIONE,NUOVAFREQUENZA
- Sam Raw 2,NUOVOINIZIOCAMPIONE,LUNGHEZZACAMPIONE,NUOVAFREQUENZA
- End Proc
- Procedure TIC[TESTO$,LINEA]
- '-> Testo Invertito e Centrato by Stefano Regattin
- 'i> 23 maggio 1996
- 'm> 25 maggio 1996
- '---------------------------------------------------------------------------
- 'LINEA contiene il numero di linea dove si posizionerà il testo; se vale -1
- ' (True) il testo sarà posizionato alla linea dove si trova il cursore; in
- ' questo caso sarà necessario un comando PRINT per spostare il cursore
- '----------------------------------------------------------------------
- If LINEA=True Then L=Y Curs Else L=LINEA
- Locate 0,L : Inverse On : Cline : Centre TESTO$ : Inverse Off
- End Proc
-